package com.mes.schedule.manager.iface;

import java.util.Date;
import java.util.List;

import com.mes.schedule.domain.SDevice;
import com.mes.schedule.domain.SWorkCenter;
import com.mes.schedule.domain.ScheduleScheme;
import com.mes.schedule.domain.WorkCenterStatistics;

/*import com.mes.schedule.persistence.domain.SDevice;
import com.mes.schedule.persistence.domain.SWorkCenter;
import com.mes.schedule.persistence.domain.ScheduleScheme;
import com.mes.schedule.persistence.domain.WorkCenterStatistics;
*/

/**
 * 调度工作中心管理
 * ClassName: ScheduleWorkCenterManager <br/>  
 * Function: TODO ADD FUNCTION. <br/>  
 * Reason: TODO ADD REASON. <br/>  
 * date: Jun 22, 2015 9:12:43 PM <br/>  
 * @author Administrator  
 * @version   
 * @since JDK 1.6
 */
public interface IScheduleWorkCenterManager {
	/**
	 * calculate the total wait time of the task waiting before the device
	 * @param device
	 * @param scheme
	 */
	public void calcWaitTime(SDevice device,ScheduleScheme scheme);
	
	
	/**
	 *  计算工作中心在某一时间之前的总能力 
	 */
	public double calCapacity(SWorkCenter workCenter,Date beforeDate);

	/**
	 * 计算工作中心在某一时间之前的总负荷
	 */ 
	public List<WorkCenterStatistics> calWorkCenterLoad(String scheduleUid,Date startTime,Date lateFinish,Double slackFactor ,Double correctedFactor) throws Exception;
			
	
	
	
//	/**
//	 *  计算工作中心在某一时间之前的必须要做的任务 
//	 *  由里程碑，零件交货期等决定
//	 */
//	public List<SOperationTask> getMustDoList(SWorkCenter workCenter,Date beforeDate);
//
//	/**
//	 *  计算工作中心在某一时间之前的必须要做的任务 
//	 *  由里程碑，零件交货期等决定 或者松弛率小于
//	 *  工序距离小于maxTaskInstance
//	 */
//	public List<SOperationTask> getMustDoList(SWorkCenter workCenter,Date beforeDate,Double slackFactorUbound);	
//	
	



}
